1 /* 2 3 Boost Software License - Version 1.0 - August 17th, 2003 4 5 Permission is hereby granted, free of charge, to any person or organization 6 obtaining a copy of the software and accompanying documentation covered by 7 this license (the "Software") to use, reproduce, display, distribute, 8 execute, and transmit the Software, and to prepare derivative works of the 9 Software, and to permit third-parties to whom the Software is furnished to 10 do so, all subject to the following: 11 12 The copyright notices in the Software and this entire statement, including 13 the above license grant, this restriction and the following disclaimer, 14 must be included in all copies of the Software, in whole or in part, and 15 all derivative works of the Software, unless such copies or derivative 16 works are solely in the form of machine-executable object code generated by 17 a source language processor. 18 19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 25 DEALINGS IN THE SOFTWARE. 26 27 */ 28 29 module derelict.glib.gatomic; 30 31 import derelict.glib.gtypes; 32 import derelict.glib.glibconfig; 33 import core.stdc.config; 34 35 extern (C): 36 37 version(Derelict_Link_Static) 38 { 39 extern( C ) nothrow 40 { 41 gint g_atomic_int_get(gint* atomic); 42 void g_atomic_int_set(gint* atomic, gint newval); 43 void g_atomic_int_inc(gint* atomic); 44 gboolean g_atomic_int_dec_and_test(gint* atomic); 45 gboolean g_atomic_int_compare_and_exchange(gint* atomic, gint oldval, gint newval); 46 gint g_atomic_int_add(gint* atomic, gint val); 47 guint g_atomic_int_and(guint* atomic, guint val); 48 guint g_atomic_int_or(guint* atomic, guint val); 49 guint g_atomic_int_xor(guint* atomic, guint val); 50 gpointer g_atomic_pointer_get(void* atomic); 51 void g_atomic_pointer_set(void* atomic, gpointer newval); 52 gboolean g_atomic_pointer_compare_and_exchange(void* atomic, gpointer oldval, gpointer newval); 53 gssize g_atomic_pointer_add(void* atomic, gssize val); 54 gsize g_atomic_pointer_and(void* atomic, gsize val); 55 gsize g_atomic_pointer_or(void* atomic, gsize val); 56 gsize g_atomic_pointer_xor(void* atomic, gsize val); 57 gint g_atomic_int_exchange_and_add(gint* atomic, gint val); 58 } 59 } 60 else 61 { 62 extern( C ) nothrow 63 { 64 alias da_g_atomic_int_get = gint function(gint* atomic); 65 alias da_g_atomic_int_set = void function(gint* atomic, gint newval); 66 alias da_g_atomic_int_inc = void function(gint* atomic); 67 alias da_g_atomic_int_dec_and_test = gboolean function(gint* atomic); 68 alias da_g_atomic_int_compare_and_exchange = gboolean function(gint* atomic, gint oldval, gint newval); 69 alias da_g_atomic_int_add = gint function(gint* atomic, gint val); 70 alias da_g_atomic_int_and = guint function(guint* atomic, guint val); 71 alias da_g_atomic_int_or = guint function(guint* atomic, guint val); 72 alias da_g_atomic_int_xor = guint function(guint* atomic, guint val); 73 alias da_g_atomic_pointer_get = gpointer function(void* atomic); 74 alias da_g_atomic_pointer_set = void function(void* atomic, gpointer newval); 75 alias da_g_atomic_pointer_compare_and_exchange = gboolean function(void* atomic, gpointer oldval, gpointer newval); 76 alias da_g_atomic_pointer_add = gssize function(void* atomic, gssize val); 77 alias da_g_atomic_pointer_and = gsize function(void* atomic, gsize val); 78 alias da_g_atomic_pointer_or = gsize function(void* atomic, gsize val); 79 alias da_g_atomic_pointer_xor = gsize function(void* atomic, gsize val); 80 alias da_g_atomic_int_exchange_and_add = gint function(gint* atomic, gint val); 81 } 82 83 __gshared 84 { 85 da_g_atomic_int_get g_atomic_int_get; 86 da_g_atomic_int_set g_atomic_int_set; 87 da_g_atomic_int_inc g_atomic_int_inc; 88 da_g_atomic_int_dec_and_test g_atomic_int_dec_and_test; 89 da_g_atomic_int_compare_and_exchange g_atomic_int_compare_and_exchange; 90 da_g_atomic_int_add g_atomic_int_add; 91 da_g_atomic_int_and g_atomic_int_and; 92 da_g_atomic_int_or g_atomic_int_or; 93 da_g_atomic_int_xor g_atomic_int_xor; 94 da_g_atomic_pointer_get g_atomic_pointer_get; 95 da_g_atomic_pointer_set g_atomic_pointer_set; 96 da_g_atomic_pointer_compare_and_exchange g_atomic_pointer_compare_and_exchange; 97 da_g_atomic_pointer_add g_atomic_pointer_add; 98 da_g_atomic_pointer_and g_atomic_pointer_and; 99 da_g_atomic_pointer_or g_atomic_pointer_or; 100 da_g_atomic_pointer_xor g_atomic_pointer_xor; 101 da_g_atomic_int_exchange_and_add g_atomic_int_exchange_and_add; 102 } 103 }